//package com.yzh.common.exception;
//
//import com.fasterxml.jackson.databind.ObjectMapper;
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.web.reactive.error.ErrorWebExceptionHandler;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.core.annotation.Order;
//import org.springframework.web.server.ServerWebExchange;
//import reactor.core.publisher.Mono;
//
///**
// * 网关全局异常处理
// * @author javadaily
// */
//@Slf4j
//@Order(-1)
//@Configuration
//@RequiredArgsConstructor(onConstructor = @__(@Autowired))
//public class GlobalErrorWebExceptionHandler implements ErrorWebExceptionHandler {
//
//    private final ObjectMapper objectMapper;
//
//    @Override
//    public Mono<Void> handle(ServerWebExchange exchange, Throwable ex) {
//        ServerHttpResponse response = exchange.getResponse();
//        if (response.isCommitted()) {
//            return Mono.error(ex);
//        }
//
//        // 设置返回JSON
//        response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
//        if (ex instanceof ResponseStatusException) {
//            response.setStatusCode(((ResponseStatusException) ex).getStatus());
//        }
//
//        return response.writeWith(Mono.fromSupplier(() -> {
//            DataBufferFactory bufferFactory = response.bufferFactory();
//            try {
//                //返回响应结果
//                return bufferFactory.wrap(objectMapper.writeValueAsBytes(ResultData.fail(500,ex.getMessage())));
//            }
//            catch (JsonProcessingException e) {
//                log.error("Error writing response", ex);
//                return bufferFactory.wrap(new byte[0]);
//            }
//        }));
//    }
//}